package com.ddxz.demo.quartz.mapper;

import com.ddxz.demo.quartz.entity.GroupEntity;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * interface description
 *
 * @author 朱宗刚
 * @version 1.0.0
 * @date 2020/11/24
 */

@Mapper
@Repository
public interface TaskMapper {
    /**
     * 新增任务调度器
     * @param entity 任务调度器信息
     * @return 是否保存成功
     */
    Integer save(@Param("entity") GroupEntity entity);

    /**
     * 修改任务调度器
     * @param entity 新任务调度器信息
     * @return 是否修改成功
     */
    Integer modify(@Param("entity") GroupEntity entity);

    /**
     * 获取任务调度器信息
     * @param groupId 调度器标识
     * @return 调度器信息
     */
    GroupEntity getGroupById(@Param("sid") String groupId);

    /**
     * 从数据库中移除调度器信息
     * @param groupId 调度器标识
     * @return 是否删除成功
     */
    Integer remove(@Param("sid") String groupId);

    /**
     * 修改调度器的执行状态
     * @param groupId 调度器标识
     * @param status 新状态
     * @return 是否修改成功
     */
    Integer setStatus(@Param("sid") String groupId, @Param("status") Integer status);

    /**
     * 以游标形式获取所有的执行中的任务
     * @return 游标
     */
    Cursor<GroupEntity> getAllRunningTask();

    /**
     * 分页检索任务调度器
     * @return 调度器清单
     */
    Page<GroupEntity> getTaskList();

    /**
     * 获取所有的调度器
     * @return 调度器清单
     */
    List<GroupEntity> getRunningTask();
}
